#ifndef TARRAY_H_INCLUDED
#define TARRAY_H_INCLUDED

template <class T> class TArray
{
public:

	TArray( int iQuantity = 1, int iGrowBy = 1 );

	int GetQuantity () const;
	T* GetArray ();
	const T* GetArray () const;
	T& operator[] ( int i );
	const T& operator[] ( int i ) const;

	void Append ( const T& rtElement );
	void SetElement ( int i, const T& rtElement );

	void Remove (int i);
	void RemoveAll ();

	void SetMaxQuantity ( int iNewMaxQuantity, bool bCopy );
	int GetMaxQuantity () const;
	void SetGrowBy ( int iGrowBy );
	int GetGrowBy () const;

private:
	T* Array;
	int CurrentQuantity;
	int MaxQuantity;
	int GrowBy;

}

#endif